﻿#ifndef State_h__
#define State_h__

/********************************************************************
	创建于:		2011/04/04
	创建于:		4:4:2011   13:45
	基本文件:	State
	文件扩展:	h
	作者:		王凯
	
	目的:		该抽象类用来被其具体状态类所继承
*********************************************************************/

struct Telegram;

template<typename entity_type>
class State
{
public:

	virtual ~State(){};

	//当进入状态时，执行该函数
	virtual void Enter(entity_type*) = 0;

	//当状态被正常更新时，执行该函数
	virtual void Execute(entity_type*) = 0;

	//当退出该状态时，执行该函数
	virtual void Exit(entity_type*) = 0;

	//当接到消息时被调用
	virtual bool OnMessage(entity_type*, const Telegram&) = 0;
};
#endif // State_h__